﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;

public partial class Views_TypeOfTrainnings : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            this.BindData();
        }
    }

    protected void BindData()
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                List<TypeOfTrainning> listTrainning = db.TypeOfTrainnings.ToList<TypeOfTrainning>();
                listTrainning.Sort((new SortTypeOfTrainnings()).Compare);

                StoreTrainnings.DataSource = listTrainning;
                StoreTrainnings.DataBind();

                gridPanelTrainnings.ActiveIndex = -1;
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    protected void StoreTrainnings_ReadData(object sender, StoreReadDataEventArgs e)
    {
        this.BindData();
    }

    protected void RowSelected(object sender, DirectEventArgs e)
    {
        try
        {
            RowSelectionModel rsm = gridPanelTrainnings.SelectionModel.Primary as RowSelectionModel;
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                try
                {
                    if (rsm.SelectedRow != null)
                    {
                        int TrainnID = Int32.Parse(rsm.SelectedRow.RecordID);
                        TypeOfTrainning trainnDisplay = db.TypeOfTrainnings.Single(p => p.TrainID == TrainnID);

                        lblViewTrainID.Text = trainnDisplay.TrainID.ToString();
                        lblViewNameOfTrain.Text = trainnDisplay.NameOfTrain.ToString();
                        lblViewDescriptons.Text = trainnDisplay.Descriptons.ToString();
                        chkViewStatusOfTrain.Checked = Boolean.Parse(trainnDisplay.StatusOfTrain.ToString());
                    }
                    else
                    {
                        return;
                    }
                }
                catch (Exception)
                {
                    X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
                }
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    protected void btnToobarAdd_DirectClick(object sender, EventArgs e)
    {
        windowAddTrainnings.Show();

        ResetControls_WindowAdd();
    }

    [DirectMethod]
    public void AddTrainnings_DirectClick()
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                foreach (var item in db.TypeOfTrainnings)
                {
                    if (txtFormAddNameOfTrain.Text.Trim().ToLower().Equals(item.NameOfTrain.ToLower()))
                    {
                        lblFormAddMsg.Text = "Tên hình thức đào tạo đã tồn tại, hảy nhập lại";
                        txtFormAddNameOfTrain.Focus(true, 100);
                        return;
                    }
                }
                TypeOfTrainning trainningAdd = new TypeOfTrainning()
                {
                    NameOfTrain = txtFormAddNameOfTrain.Text.Trim(),
                    Descriptons = txtFormAddDescriptons.Text.Trim(),
                    StatusOfTrain = chkFormAddStatusOfTrain.Checked
                };
                db.TypeOfTrainnings.Add(trainningAdd);
                db.SaveChanges();

                windowAddTrainnings.Hidden = true;
                windowAddTrainnings.Dispose();

                this.BindData();

                X.Msg.Alert("Thông báo", "Thêm mới hình thức đào tạo thành công").Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    protected void btnAddReset_DirectClick(object sender, EventArgs e)
    {
        ResetControls_WindowAdd();
    }

    protected void btnToobarUpdate_DirectClick(object sender, EventArgs e)
    {
        try
        {
            lblFormUpdateMsg.Text = "";
            if (txtFormUpdateNameOfTrain.Text.Length == 0 || txtFormUpdateNameOfTrain.Text.Length != 0)
            {
                txtFormUpdateNameOfTrain.Focus(true, 100);
            }
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                RowSelectionModel rsm = gridPanelTrainnings.SelectionModel.Primary as RowSelectionModel;
                try
                {
                    if (rsm.SelectedRow == null)
                    {
                        windowUpdateTrainn.Hidden = true;
                        windowUpdateTrainn.Dispose();
                        X.Msg.Alert("Thông báo", "Bạn chưa chọn bản ghi để cập nhật").Show();
                        return;
                    }
                    else
                    {
                        windowUpdateTrainn.Show();
                        int trainnID = Int32.Parse(rsm.SelectedRow.RecordID);
                        TypeOfTrainning trainnUpdate = db.TypeOfTrainnings.Single(p => p.TrainID == trainnID);

                        txtFormUpdateNameOfTrain.Text = trainnUpdate.NameOfTrain.ToString();
                        txtFormUpdateDescriptions.Text = trainnUpdate.Descriptons.ToString();
                        chkFormUpdateStatustOfTrain.Checked = Boolean.Parse(trainnUpdate.StatusOfTrain.ToString());
                    }
                }
                catch (Exception)
                {
                    windowUpdateTrainn.Hidden = true;
                    windowUpdateTrainn.Dispose();
                    X.Msg.Alert("Thông báo", "Bạn chưa chọn hình thức đào tạo để chỉnh sửa").Show();
                    return;
                }
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    [DirectMethod]
    public void UpdateTrainnings_DirectClick()
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                RowSelectionModel rsm = gridPanelTrainnings.SelectionModel.Primary as RowSelectionModel;
                try
                {
                    if (rsm.SelectedRow == null)
                    {
                        X.Msg.Alert("Thông báo", "Bạn chưa chọn hình thức đào tạo để chỉnh sửa").Show();
                        return;
                    }
                }
                catch (Exception)
                {
                    X.Msg.Alert("Thông báo", "Bạn chưa chọn hình thức đào tạo để chỉnh sửa").Show();
                    return;
                }
                int trainID = Int32.Parse(rsm.SelectedRow.RecordID);

                TypeOfTrainning poliUpdate = db.TypeOfTrainnings.Single(p => p.TrainID == trainID);
                String NameUpdate = txtFormUpdateNameOfTrain.Text.Trim();
                foreach (var item in db.TypeOfTrainnings)
                {
                    if (item.NameOfTrain.ToLower().Equals(NameUpdate.ToLower()) && item.TrainID != poliUpdate.TrainID)
                    {
                        lblFormUpdateMsg.Text = "Tên hình thức đào tạo đã tồn tại, hãy nhập mã mới.";
                        txtFormUpdateNameOfTrain.Focus(true, 100);
                        return;
                    }
                }
                poliUpdate.NameOfTrain = txtFormUpdateNameOfTrain.Text.Trim();
                poliUpdate.Descriptons = txtFormUpdateDescriptions.Text.Trim();
                poliUpdate.StatusOfTrain = Boolean.Parse(chkFormUpdateStatustOfTrain.Checked.ToString());

                db.SaveChanges();

                windowUpdateTrainn.Hidden = true;
                windowUpdateTrainn.Dispose();
                this.BindData();

                X.Msg.Alert("Thông báo hệ thống", "Cập nhật hình thức đào tạo thành công").Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    protected void btnToobarDelete_DirectClick(object sender, EventArgs e)
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                try
                {
                    RowSelectionModel rsm = gridPanelTrainnings.SelectionModel.Primary as RowSelectionModel;
                    if (rsm.SelectedRow != null)
                    {
                        int trainIDDelete = Int32.Parse(rsm.SelectedRow.RecordID);
                        TypeOfTrainning trainDelete = db.TypeOfTrainnings.Single(p => p.TrainID == trainIDDelete);
                        X.Msg.Confirm("Thông báo hệ thống", String.Format("Bạn có muốn xóa hình thức đào tạo đã chọn ? [{0}]", trainDelete.NameOfTrain),
                        new MessageBoxButtonsConfig()
                        {
                            Yes = new MessageBoxButtonConfig
                            {
                                Text = "Xóa",
                                Handler = "App.direct.DoYes_DeleteTrainnings();"
                            },
                            No = new MessageBoxButtonConfig
                            {
                                Text = "Hủy bỏ"
                            }
                        }).Show();
                    }
                    else
                    {
                        X.Msg.Alert("Thông báo", "Bạn chưa chọn bản ghi để xóa thông tin").Show();
                        return;
                    }
                }
                catch (Exception)
                {
                    X.Msg.Alert("Thông báo", "Bạn chưa chọn bản ghi để xóa thông tin").Show();
                    return;
                }
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    [DirectMethod]
    public void DoYes_DeleteTrainnings()
    {
        try
        {
            RowSelectionModel rsm = gridPanelTrainnings.SelectionModel.Primary as RowSelectionModel;
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                int TrainIDSelectDelete = Int32.Parse(rsm.SelectedRow.RecordID);
                TypeOfTrainning TrainDelete = db.TypeOfTrainnings.Single(p => p.TrainID == TrainIDSelectDelete);

                db.TypeOfTrainnings.Remove(TrainDelete);
                db.SaveChanges();

                BindData();
                ResetControls_ViewInfor();
                X.Msg.Alert("Thông báo", "Xóa hình thức học vấn thành công").Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    private void ResetControls_WindowAdd()
    {
        if (txtFormAddNameOfTrain.Text.Length == 0)
        {
            txtFormAddNameOfTrain.Focus(true, 100);
        }
        txtFormAddNameOfTrain.Text = "";
        txtFormAddDescriptons.Text = "";
        chkFormAddStatusOfTrain.Checked = false;

        lblFormAddMsg.Text = "";
    }

    private void ResetControls_ViewInfor()
    {
        lblViewTrainID.Text = "";
        lblViewNameOfTrain.Text = "";
        lblViewDescriptons.Text = "";
        chkViewStatusOfTrain.Checked = false;
    }
}